package com.practice.reflect;

interface Service {
    void offerService();
}

class Server implements Service {
    @Override
    public void offerService() {
        System.out.println("提供服务");
    }
}

class ServerStaticProxy implements Service {
    private final Service service;

    public ServerStaticProxy(Service service){
        this.service = service;
    }

    @Override
    public void offerService() {
        System.out.println("检验服务要求中……");
        service.offerService();
        System.out.println("服务结束");
    }
}

/**
 * 静态代理
 * 顾名思义，代理不通过自身调用想调用的方法，通过代理类进行执行
 * 静态，意味着硬编码，强耦合，在代理类中直接注入代理对象，从而调用代理方法
 * @author 不鄢
 */
public class StaticProxy {
     public static void main(String[] args) {
         // 创建目标对象
         Service service = new Server();
         // 创建代理对象
         Service serviceProxy = new ServerStaticProxy(service);
         // 调用代理方法
         serviceProxy.offerService();
    }
}
